home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-10-27 | 35.1 KB | 2,094 lines |
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
- »
- » DarkRoom -40k Intro by Dweezil
- »
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- rot equ 213
- zmp equ 437
- part2_flash equ 215
- part2_tm equ 430
-
- part3_tm equ 400
-
- w_blit macro
- .\@wb btst #6,$002(a6)
- bne.b .\@wb
- endm
-
- go move.l $4.w,a6
- moveq #0,d0
- lea gfxname_0(pc),a1
- jsr -$228(a6)
- move.l d0,gfxbase_0
- beq exit_0
- move.l d0,a6
- move.l $22(a6),wbview_0
- sub.l a1,a1
- jsr -$de(a6)
- jsr -$10e(a6)
- jsr -$10e(a6)
- ; jsr -$1e8(a6)
- jsr -$e4(a6)
-
- bsr z_init
-
- lea $dff000,a6
- move #$0020,$096(a6)
- clr.l $140(a6)
-
- ; move #$4000,$09a(a6)
-
- move.l #copper_0,$080(a6)
- bsr clbss_0
- bsr go_part_1
-
- move.l #copper_0,$080(a6)
- bsr clbss_0
- bsr go_part_2
-
- move.l #copper_0,$080(a6)
- bsr clbss_0
- bsr go_part_3
-
- move.l #copper_0,$080(a6)
- bsr clbss_0
- bsr go_part_4
-
- bsr z_end
- move #$8020,$dff096
-
- move.l gfxbase_0(pc),a6
- jsr -$e4(a6)
- ; jsr -$1ce(a6)
-
- move.l wbview_0(pc),a1
- jsr -$de(a6)
- jsr -$10e(a6)
- jsr -$10e(a6)
- move.l $26(a6),$dff080
- move.l a6,a1
- move.l $4.w,a6
- jsr -$19e(a6)
-
- exit_0 moveq #0,d0
- rts
-
- »» Clear bss-hunk
-
- clbss_0 moveq #0,d0
- move.l d0,d1
- move.l d0,d2
- move.l d0,d3
- move.l d0,a0
- move.l d0,a1
- move.l d0,a2
- move.l d0,a3
-
- lea chip+chip_siz,a4
- move #chip_siz>>8-1,d4
- .clfast rept 8
- movem.l d0-d3/a0-a3,-(a4)
- endr
- dbf d4,.clfast
- rts
-
- gfxname_0 dc.b "graphics.library",0
- even
-
- gfxbase_0 dc.l 0
- wbview_0 dc.l 0
-
- ;; <1>
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
- »
- » " S o l a r W i n d "
- »
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- go_part_1 bsr s_init_1
- sf stuff_1
-
- mouse_1 bsr do_wind_1
-
- move.l #scopa_1,$080(a6)
- bsr plus_1
-
- bsr do_wind_1
-
- move.l #scopb_1,$080(a6)
- bsr minus_1
-
- cmp #zmp+170,frame_1
- bhs.b .x
-
- btst #6,$bfe001
- bne.b mouse_1
-
- .x rts
-
- s_init_1 lea sptra_1,a0
- move.l #bpa1_1,d2
- lea sptrb_1,a1
- move.l #bpb1_1,d3
- moveq #0,d1
- moveq #3,d0
- .1 move d2,6(a0,d1.w)
- swap d2
- move d2,2(a0,d1.w)
- swap d2
- move d3,6(a1,d1.w)
- swap d3
- move d3,2(a1,d1.w)
- swap d3
- addq #8,d1
- add.l #10240,d2
- add.l #10240,d3
- dbf d0,.1
-
- lea fractar_1,a0
- move #$17f,d2
- move #$181,d3
- bsr do_prog_1
-
- lea zoomaa_1,a0
- move #-1,d2
- move #$180,d3
- bsr do_prog_1
-
- lea rotate_1,a0
- move #$180,d2
- move #1,d3
- bsr do_prog_1
-
- move.l #scopa_1,$080(a6)
-
- rts
-
- do_wind_1 addq #1,frame_1
- moveq #0,d0
- move frame_1(pc),d0
- move.l prgptr_1(pc),a0
- cmp.l (a0),d0
- bne.b .zop
- move.l 4(a0),d0
- move.l d0,twist_1
- cmp.l #zoomaa_1,d0
- bne.b .2
- st stuff_1
- .2 addq.l #8,prgptr_1
- .zop
- bsr do_pos_1
- bsr do_tube_1
- bsr do_blit_1
- bsr do_bli2_1
-
- rts
-
- frame_1 dc 0
- twist_1 dc.l hold_1
- prgptr_1 dc.l program_1
-
- program_1 dc.l 1,fractar_1
- dc.l rot,rotate_1
- dc.l zmp,zoomaa_1
- dc.l -1,-1
-
-
- »» calculate blit prog
-
- do_prog_1 move d3,d6
- asl #2,d3
- move d2,d5
- asl #2,d2
- add d5,d2
- moveq #8,d1
- .l1 move d2,d7
- moveq #10,d0
- .l2 move d3,d4
- add d7,d4
- move d4,(a0)+
- sub d5,d7
- dbf d0,.l2
- sub d6,d3
- dbf d1,.l1
- rts
-
- »» + laskuosuus bpa -> bpb
-
- plus_1 w_blit
-
- moveq #0,d0
- move.l d0,$040(a6)
- move.l d0,$060(a6)
- move.l d0,$064(a6)
- moveq #-1,d0
- move.l d0,$044(a6)
-
- move #$0f80,$040(a6) bpa2 and bpa3 and bpa4 -> t
- move.l #bpa2_1,$050(a6)
- move.l #bpa3_1,$04c(a6)
- move.l #bpa4_1,$048(a6)
- move.l #t_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #8,$062(a6)
-
- move #$0fe6,$040(a6) bpa1 + g -> bpb1
- move.l #t_1,$050(a6)
- move.l #g_1,$04c(a6)
- move.l #bpa1_1,$048(a6)
- move.l #bpb1_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #0,$062(a6)
-
- move #$0f9a,$040(a6) bpa2 + 1 -> bpb2
- move.l #bpa1_1,$050(a6)
- move.l #bpb1_1,$04c(a6)
- move.l #bpa2_1,$048(a6)
- move.l #bpb2_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #$0f9a,$040(a6) bpa3 + 1 -> bpb3
- move.l #bpa2_1,$050(a6)
- move.l #bpb2_1,$04c(a6)
- move.l #bpa3_1,$048(a6)
- move.l #bpb3_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #$0f9a,$040(a6) bpa4 + 1 -> bpb4
- move.l #bpa3_1,$050(a6)
- move.l #bpb3_1,$04c(a6)
- move.l #bpa4_1,$048(a6)
- move.l #bpb4_1,$054(a6)
- move #$4014,$058(a6)
-
- rts
-
-
- »» - laskuosuus bpb -> bpa
-
- minus_1 w_blit
-
- moveq #0,d0
- move.l d0,$040(a6)
- move.l d0,$060(a6)
- move.l d0,$064(a6)
- moveq #-1,d0
- move.l d0,$044(a6)
-
- move #$0f01,$040(a6) bpb2 and bpb3 and bpb4 -> t
- move.l #bpb2_1,$050(a6)
- move.l #bpb3_1,$04c(a6)
- move.l #bpb4_1,$048(a6)
- move.l #t_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #8,$062(a6)
- move #$0f89,$040(a6) bpb1 - g -> bpa1
- move.l #t_1,$050(a6)
- move.l #g_1,$04c(a6)
- move.l #bpb1_1,$048(a6)
- move.l #bpa1_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #0,$062(a6)
- move #$0fa6,$040(a6) bpb2 - 1 -> bpa2
- move.l #bpb1_1,$050(a6)
- move.l #bpa1_1,$04c(a6)
- move.l #bpb2_1,$048(a6)
- move.l #bpa2_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #$0fa6,$040(a6) bpb2 - 1 -> bpa2
- move.l #bpb2_1,$050(a6)
- move.l #bpa2_1,$04c(a6)
- move.l #bpb3_1,$048(a6)
- move.l #bpa3_1,$054(a6)
- move #$4014,$058(a6)
-
- w_blit
-
- move #$0fa6,$040(a6) bpb2 - 1 -> bpa2
- move.l #bpb3_1,$050(a6)
- move.l #bpa3_1,$04c(a6)
- move.l #bpb4_1,$048(a6)
- move.l #bpa4_1,$054(a6)
- move #$4014,$058(a6)
-
- rts
-
-
- »» put random stuff in the middle of the screen
-
- do_tube_1 move.l rand_1(pc),d0
- add frame_1(pc),d0
- ; add.l $004(a6),d0
- ror.l #5,d0
- eor #$1dc4,d0
- move.l d0,rand_1
-
- lea g_1,a0
-
- tst.b stuff_1
- bne.b .2
-
- moveq #3,d1
- .1 eor.b d0,126*48+19(a0)
- swap d0
- eor.b d0,126*48+20(a0)
- add #48,a0
- add a0,d0
- ror.l #1,d0
- dbf d1,.1
- rts
-
- .2 moveq #3,d1
- .3 clr.b 126*48+19(a0)
- clr.b 126*48+20(a0)
- add #48,a0
- dbf d1,.3
- rts
-
- stuff_1 dc 0
-
-
- »» do the twist!
-
- do_pos_1 moveq #$1f,d0
- and frame_1(pc),d0
- add d0,d0
- lea .tab(pc),a0
- move (a0,d0),d0
- move d0,apos_1
- rts
-
- .tab dc %00000,%10000,%01000,%11000,%00100,%10100,%01100,%11100
- dc %00010,%10010,%01010,%11010,%00110,%10110,%01110,%11110
- dc %00001,%10001,%01001,%11001,%00101,%10101,%01101,%11101
- dc %00011,%10011,%01011,%11011,%00111,%10111,%01111,%11111
-
- apos_1 dc 0
-
- »» takaisinkopsublitti
-
- do_bli2_1 move apos_1(pc),d0
- muls #24,d0
- move apos_1(pc),d1
- asr #4,d1
- add d1,d0
- add d0,d0
- ext.l d0
-
- lea t_1+$c0a,a0
- sub.l d0,a0
-
- move apos_1(pc),d1
- ror #4,d1
- and #$f000,d1
- or #$09f0,d1
-
- w_blit
-
- move d1,$040(a6) t+logo -> g
- move.l #0,$044(a6)
- move.l #$ffffffff,$044(a6)
- move.l #$00000000,$060(a6)
- move.l #$00000000,$064(a6)
- move.l a0,$050(a6)
- move.l #g_1,$054(a6)
- move #$4018,$058(a6)
-
- rts
-
- »» blitter driver for zoomer
-
- do_blit_1 lea g_1-$c08,a0
- lea t_1,a4
-
- move apos_1(pc),d5
- move d5,d4
- muls #384,d5
- add d4,d5
- subq #1,d5
-
- move #$0803,d3 bltsize
- move.l twist_1(pc),a1
- add #$62c,a4 start pos.
- add #$62c,a0
-
- move #$62c,d7 'modulo'
- moveq #8,d6 loop counter
-
- lea $dff002,a6
-
- .blit1 btst #6,(a6)
- bne.b .blit1
-
- move #$0000,$042-2(a6) clear bltcon1
- move.l #$ffffffff,$044-2(a6) set masks
- move.l #$002a002a,$064-2(a6) set modulos for A & D
-
- .loop2 moveq #10,d4
- .loop1 move (a1)+,d0
- add d5,d0
- moveq #$f,d2
- and d0,d2
- add d2,d2
- move .con0(pc,d2),d2
- asr #3,d0
- lea (a0,d0),a3
- .blit2 btst #6,(a6)
- bne.b .blit2
- move d2,$040-2(a6) set bltcon0
- movem.l a3/a4,$050-2(a6) set bltaptr & bltdptr
- move d3,$058-2(a6) set size
- subq #4,a0
- subq #4,a4
- dbf d4,.loop1
- add d7,a0
- add d7,a4
- dbf d6,.loop2
- lea $dff000,a6
- rts
-
- .con0 dc $f9f0,$e9f0,$d9f0,$c9f0,$b9f0,$a9f0,$99f0,$89f0
- dc $79f0,$69f0,$59f0,$49f0,$39f0,$29f0,$19f0,$09f0
-
- rand_1 dc.l $deadbeef
-
- ;; <2>
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
- »
- » " P a r t i c l e s "
- »
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- go_part_2 lea $dff000,a6
-
- mouse_2 tst.b 5(a6)
- beq.b mouse_2
- .1 tst.b 5(a6)
- bne.b .1
-
- bsr laita2_2
-
- cmp #part2_flash,frame_2
- bne.b .rer
- bsr laita1_2
-
- .rer movem.l scr1_2(pc),d0-d3
- move.l d0,d4
- move.l d1,d0
- move.l d2,d1
- move.l d3,d2
- move.l d4,d3
- movem.l d0-d3,scr1_2
-
- move.l d0,$0e0(a6)
- move.l d1,$0e4(a6)
- move.l d2,$0e8(a6)
- move.l #bpl_tx_2,$0ec(a6)
-
- move frame_2(pc),d0
- addq #1,d0
- move d0,frame_2
-
- move.l parpt_2(pc),a0
- cmp frame2_2(pc),d0
- bne.b .3
-
- addq #4,a0
- tst.b 1(a0)
- bpl.b .2
- lea param_2(pc),a0
-
- .2 moveq #0,d1
- move.b (a0),d1
- add d0,d1
- move d1,frame2_2
- move.l a0,parpt_2
-
- .3 move.b 2(a0),d0
- move.b 3(a0),d1
-
- bsr vaaka_2
- bsr pysty_2
-
- move frame_2(pc),d0
-
- cmp #part2_tm+16,d0
- beq.b .x
-
- cmp #part2_tm,d0
- blo.b .4
- bsr fadeout_2
- .4
- move.l #copper_2,$080(a6)
- btst #6,$bfe001
- bne mouse_2
-
- .x rts
-
- frame_2 dc 0
- frame2_2 dc 1
-
- parpt_2 dc.l param_2
-
- param_2 dc.b 1,$00,$05,$ff
- dc.b 1,$00,$02,$00
- dc.b 1,$00,$07,$ff
- dc.b 1,$00,$00,$00
- dc.b 1,$00,$01,$ff
- dc.b 1,$00,$06,$00
- dc.b 1,$00,$03,$ff
- dc.b 1,$00,$04,$00
- dc.l -1
-
- scr1_2 dc.l bpl1_2
- scr2_2 dc.l bpl2_2
- scr3_2 dc.l bpl3_2
- scr4_2 dc.l bpl4_2
-
- fadeout_2 lea fadehere_2,a0
- moveq #15,d3
- .lo addq #2,a0
- move (a0),d0
- move d0,d1
- move d0,d2
-
- and #$000f,d0
- and #$00f0,d1
- and #$0f00,d2
-
- subq #$0001,d0
- bpl.b .1
- moveq #0,d0
- .1 sub #$0010,d1
- bpl.b .2
- moveq #0,d1
- .2 sub #$0100,d2
- bpl.b .3
- moveq #0,d2
- .3 or d2,d0
- or d1,d0
- move d0,(a0)+
-
- dbf d3,.lo
- rts
-
-
- laita1_2 move.l scr2_2(pc),a0
- add #112*40+18,a0
- moveq #-1,d0
- moveq #7,d1
- .1 move.l d0,(a0)
- move.l d0,40(a0)
- move.l d0,80(a0)
- move.l d0,120(a0)
- add #160,a0
- dbf d1,.1
- rts
-
- laita2_2
- move.l scr2_2(pc),a0
- add #112*40,a0
- lea pic_2,a1
- lea bpl_tx_2,a2
- add #112*40,a2
-
- moveq #31,d0
- and frame_2(pc),d0
- mulu #40,d0
- add d0,a0
- add d0,a1
- add d0,a2
-
- .1 rept 10
- move.l (a1)+,d2
- or.l d2,(a0)+
- move.l d2,(a2)+
- endr
- rts
-
- »» vaakasuuntainen siirto
-
- v_bsiz_2 = $0105
-
- vaaka_2 move.l scr1_2(pc),a0
- lea temp_2,a1
-
- move #255,d4
- moveq #40,d2
-
- w_blit
- moveq #0,d3
- move d3,$042(a6)
- move.l d3,$064(a6)
- moveq #-1,d3
- move.l d3,$044(a6)
-
- .lp move d1,d3
- eor d4,d3
- btst d0,d3
-
- beq.b .bit1
- w_blit
- move #$19f0,$040(a6)
- movem.l a0/a1,$050(a6)
- move #v_bsiz_2,$058(a6)
- add d2,a0
- add d2,a1
- dbf d4,.lp
- rts
-
- .bit1 addq #2,a0
- w_blit
- move #$f9f0,$040(a6)
- movem.l a0/a1,$050(a6)
- move #v_bsiz_2,$058(a6)
- add #38,a0
- add d2,a1
- dbf d4,.lp
- rts
-
- »» pystypalkkien siirrot
-
- pysty_2 lea temp_2,a0
- lea 40(a0),a1
- sub #40,a0
- move.l scr2_2(pc),a2
-
- moveq #-32,d2
- moveq #19,d6
-
- w_blit
- move #0,$042(a6)
- moveq #38,d3
- move d3,$062(a6)
- move d3,$064(a6)
- move d3,$066(a6)
- moveq #-1,d3
- move.l d3,$044(a6)
-
- .ilo moveq #15,d5
- .l1 move d1,d3
- eor d2,d3
- add d4,d4
- btst d0,d3
- bne.b .l1z
- addq #1,d4
- .l1z addq #1,d2
- dbf d5,.l1
-
- w_blit
- move #$0dd8,$040(a6)
- movem.l a0/a1/a2,$04c(a6)
- move d4,$070(a6)
- move #$4001,$058(a6)
-
- addq #2,a0
- addq #2,a1
- addq #2,a2
-
- dbf d6,.ilo
- rts
-
- ;; <3>
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
- »
- » " F i r e F l i e s "
- »
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- offs_3 = $780
-
- go_part_3 lea $dff000,a6
-
- bsr init_3
- bsr dosine_3
-
- mouse_3 tst.b 5(a6)
- beq.b mouse_3
- .1 tst.b 5(a6)
- bne.b .1
-
- addq #1,frame_3
-
- move #$7fe,d1
-
- move.l posse_3(pc),d2
- add.l speed_3(pc),d2
- move.l d2,posse_3
- swap d2
- add.l #$800,speed_3
- move d2,d0
- and d1,d0
-
- lea sin_3,a0
- lea cos_3-sin_3(a0),a1
- lea coords_3(pc),a2
- move (a0,d0),(a2)+
- move (a1,d0),(a2)+
-
- lsr #1,d2
- add #offs_3,d2
- move d2,d0
- and d1,d0
- move (a0,d0),(a2)+
- move (a1,d0),(a2)+
-
- lsr #1,d2
- add #offs_3,d2
- move d2,d0
- and d1,d0
- move (a0,d0),(a2)+
- move (a1,d0),(a2)+
-
- lsr #1,d2
- add #offs_3,d2
- move d2,d0
- and d1,d0
- move (a0,d0),(a2)+
- move (a1,d0),(a2)+
-
- lsr #1,d2
- add #offs_3,d2
- move d2,d0
- and d1,d0
- move (a0,d0),(a2)+
- move (a1,d0),(a2)+
-
- movem.l coords_3-2(pc),d0-d4
- lea star_3+512-160,a0
- lea (a0,d1),a1
- lea (a0,d2),a2
- lea (a0,d3),a3
- lea (a0,d4),a4
- add d0,a0
- bsr vaaka_3
-
- movem.l coords_3(pc),d0-d4
- lea star_3+512-128,a0
- lea (a0,d1),a1
- lea (a0,d2),a2
- lea (a0,d3),a3
- lea (a0,d4),a4
- add d0,a0
- bsr pysty_3
-
- move.l cop2_3(pc),$080(a6)
-
- lea ptexg_3(pc),a0
- movem.l (a0),d0-d3
- exg d0,d1
- exg d2,d3
- movem.l d0-d3,(a0)
-
- cmp #part3_tm,frame_3
- beq.b .x
-
- btst #6,$bfe001
- bne mouse_3
- .x rts
-
- speed_3 dc.l $80000
- frame_3 dc 0
- posse_3 dc.l 0
-
- ptexg_3
- cop1_3 dc.l copper1_3
- cop2_3 dc.l copper2_3
- scrl1_3 dc.l line1_3
- scrl2_3 dc.l line2_3
-
- coords_3 dc 0,0
- dc 0,0
- dc 0,0
- dc 0,0
- dc 0,0
-
- »» Calculate sin & cos lists using formula sin a = a-a^3/3!+a^5/5!-a^7/7!
- »» 11 bits are used in the calculations for precision
-
- dosine_3 lea sin_3,a0
- lea 1024(a0),a1
- moveq #0,d4
-
- move #255,d3
- .l1 move.l d4,d0
- swap d0
- add.l #823550,d4 Pi<<18
- move d0,d2
- move d0,d1
- mulu d1,d1
- lsl.l #4,d1
- swap d1
- mulu d1,d0
- divu #3<<11,d0
- sub d0,d2
- mulu d1,d0
- divu #10<<11,d0
- add d0,d2
- mulu d1,d0
- divu #21<<11,d0
- sub d0,d2
- asr #4,d2
-
- move d2,(a0)+
- move d2,2046(a0)
- move d2,-(a1)
- neg d2
- move d2,1022(a0)
- move d2,1024(a1)
-
- dbf d3,.l1
- rts
-
- »»»»»»» inittialiohjelma »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- init_3 lea l_even_3,a1 Muodostetaan 1/0 bittitasot
- lea l_odd_3,a0
- moveq #-1,d1
- moveq #9,d0
- .1 move.l d1,(a0)+
- clr.l (a1)+
- dbf d0,.1
-
- lea copst_3(pc),a0 kopsataan copperlistat
- move.l cop1_3(pc),a1
- move.l cop2_3(pc),a2
- moveq #copstl_3>>2-1,d0
- .c1 move.l (a0),(a1)+
- move.l (a0)+,(a2)+
- dbf d0,.c1
-
- move.l scrl1_3(pc),d0 laitetaan niihin bpl-pointterit
- move.l cop1_3(pc),a0
- bsr .cz
- move.l scrl2_3(pc),d0
- move.l cop2_3(pc),a0
- bsr .cz
-
- bsr inz_cl_3
- bsr do_sqt_3
-
- rts
-
- »»
-
- .cz moveq #4-1,d1 Asettaa bpl-pointterit copperlistaan
- .cz1 move d0,bploff_3+4(a0)
- swap d0
- move d0,bploff_3(a0)
- swap d0
- addq #8,a0
- add.l #40,d0
- dbf d1,.cz1
- rts
-
- copst_3 dc $008e,$2c81,$0090,$2cc1 Copperlistan alku
- dc $0092,$0038,$0094,$00d0
- dc $0100,$5000,$0102,$0000
- dc $0104,$0000,$0180,$0000
- dc $0108,$ffd8,$010a,$ffd8
- bploff_3 = *-copst_3+2
- dc $00e0,$0000,$00e2,$0000
- dc $00e4,$0000,$00e6,$0000
- dc $00e8,$0000,$00ea,$0000
- dc $00ec,$0000,$00ee,$0000
- copstl_3 = *-copst_3
-
- »» varilistat yms. rakennetaan
-
- inz_cl_3 lea cmaps_3,a0
- lea $1200(a0),a1
- lea .ctab(pc),a3
- lea cptab_3,a4
-
- moveq #0,d4
-
- moveq #$3f,d7
- .1 move.l a0,(a4)+
-
- move.l #l_even_3,d1
- move #$00f2,(a0)+
- move d1,(a0)+
- move #$00f0,(a0)+
- swap d1
- move d1,(a0)+
-
- move.l #l_odd_3,d1
- move #$00f2,(a1)+
- move d1,(a1)+
- move #$00f0,(a1)+
- swap d1
- move d1,(a1)+
-
- move #$0180,d1
-
- move #$01a0,d2
- moveq #$f,d6
- .2 and #$7e,d4
- move (a3,d4),d3
- addq #8,d4
- move d1,(a0)+
- move d3,(a0)+
- move d2,(a1)+
- move d3,(a1)+
- addq #2,d1
- addq #2,d2
- dbf d6,.2
- addq #2,d4
-
- dbf d7,.1
- rts
-
-
- .ctab blk 24,0
-
- dc $000,$001,$002,$003,$004,$005,$006,$007
- dc $008,$009,$00a,$00b,$00c,$00d,$00e,$00f
- dc $22f,$44f,$88f,$aaf,$ccf,$eef,$fff,$fff
- dc $fff,$fff,$fff,$fff,$fff,$eef,$ccf,$aaf
- dc $88f,$11e,$00c,$00a,$008,$006,$004,$002
- blk 32,0
-
- dc $000,$001,$002,$003,$004,$005,$006,$007
- dc $008,$009,$00a,$00b,$00c,$00d,$00e,$00f
- dc $00e,$00d,$01c,$02b,$03a,$049,$058,$067
- dc $076,$085,$094,$0a3,$0b2,$0c1,$0d0,$0e0
- dc $0f0,$0e0,$0d0,$1c0,$2b0,$3a0,$490,$580
- dc $670,$760,$850,$940,$a30,$b20,$c10,$d00
- dc $e00,$f00,$e00,$d00,$c00,$b00,$a00,$900
- dc $800,$700,$600,$500,$400,$300,$200,$100
-
- »» muodostetaan taulukkoja
-
- do_sqt_3 lea star_3,a0
- lea 1024(a0),a1
- move #511,d0
- .1 moveq #5,d2
- add d0,d2
- move.l #$100,d1
- divu d2,d1
-
- move.b d1,(a0)+
- move.b d1,-(a1)
- dbf d0,.1
- rts
-
- »» rakennetaan copperlista
-
- pysty_3 move.l #$2c01fffe,d1
- move.l #$01000000,d2
-
- move.l cop2_3(pc),a5
- add #copstl_3,a5
-
- moveq #$7f,d3
-
- w_blit
-
- move.l #$09f00000,$040(a6)
- move.l #$ffffffff,$044(a6)
- move.l #$00000000,$064(a6)
-
- .zoka move.b (a0)+,d0 Even line
- add.b (a1)+,d0
- add.b (a2)+,d0
- add.b (a3)+,d0
- add.b (a4)+,d0
-
- and #$fc,d0
- move.l cptab_3(pc,d0),d0
-
- move.l d1,(a5)+
- add.l d2,d1
-
- w_blit
-
- move.l d0,$050(a6)
- move.l a5,$054(a6)
- move #$0109,$058(a6)
- add #$48,a5
-
- move.b (a0)+,d0 Odd line
- add.b (a1)+,d0
- add.b (a2)+,d0
- add.b (a3)+,d0
- add.b (a4)+,d0
-
- and #$fc,d0
- move.l cptab_3(pc,d0),d0
- add.l #$1200,d0
- move.l d1,(a5)+
- add.l d2,d1
- bcc.b .b3
- move.l #$ffe1fffe,(a5)+
-
- .b3 w_blit
-
- move.l d0,$050(a6)
- move.l a5,$054(a6)
- move #$0109,$058(a6)
- add #$48,a5
-
- dbf d3,.zoka
-
- move.l #$01800000,(a5)+
-
- move.l #-2,(a5)+
- rts
-
- cptab_3 ds.l $40
-
- »» rakennetaan vaakarivi
-
- vaaka_3 move.l scrl2_3(pc),a5
- moveq #9,d7
- .a moveq #15,d5
- .b rept 2
- move.b (a0)+,d0
- add.b (a1)+,d0
- add.b (a2)+,d0
- add.b (a3)+,d0
- add.b (a4)+,d0
- add.b d0,d0
- addx.l d4,d4
- add.b d0,d0
- addx.l d3,d3
- add.b d0,d0
- addx.l d2,d2
- add.b d0,d0
- addx.l d1,d1
- endr
- dbf d5,.b
- move.l d4,120(a5)
- move.l d3,80(a5)
- move.l d2,40(a5)
- move.l d1,(a5)+
- dbf d7,.a
- rts
-
- ;; <4>
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
- »
- » " L a z e r s "
- »
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- lines_4 = 64
-
- go_part_4 lea $dff000,a6
-
- move.b #$ac,lin1_4
- move.b #$ac,lin2_4
-
- bsr do_sine_4
-
- mouse_4 tst.b 5(a6)
- beq.b mouse_4
- .1 tst.b 5(a6)
- bne.b .1
-
- bsr.b avaa_4
-
- movem.l scr1_4(pc),d0-d1
- exg d0,d1
- movem.l d0-d1,scr1_4
-
- add.l #$500,d0
- move.l d0,$0e0(a6)
- move.l d0,$0e4(a6)
- move.l #pic_4,$0e8(a6)
-
- addq #1,frame_4
-
- bsr clear_4
- bsr radat_4
- bsr dolines_4
-
- move.l #copper_4,$080(a6)
-
- btst #6,$bfe001
- bne mouse_4
-
- rts
-
- frame_4 dc 0
-
- avaa_4 move.b lin1_4,d0
- cmp.b #$99,d0
- beq.b .x
- subq.b #1,lin1_4
- addq.b #1,lin2_4
- .x rts
-
- »» Clear
-
- clear_4 w_blit
- move.l #$01000000,$040(a6)
- move #0,$066(a6)
- move.l scr2_4(pc),a0
- add #32*40,a0
- move.l a0,$054(a6)
- move #$4014,$058(a6)
- rts
-
- »» Laskee radat
-
- radat_4 move.l #$ffff,d2
- move frame_4(pc),d6
- moveq #$40,d0
- sub d6,d0
- bmi.b .fg
-
- asr #2,d0
- ror.l d0,d2
-
- .fg moveq #0,d5
- sub #$20,d6
- add d6,d6
-
- ror d6,d2
- move d6,d7
-
- .lp lea sin_4,a1
- lea rata_4,a2
-
- move frame_4(pc),d5
-
- btst #8,d5
- bne.b .sfg
- not d5
- add #$100,d5
- .sfg sub #$80,d5
- ext d5
- asl #4,d5
-
- and #$fe,d6
- and #$fe,d7
-
- moveq #lines_4-1,d4
-
- .zp move d5,d0
- add (a1,d7),d0
- add (a1,d6),d0
- move 64(a1,d7),d1
- add 64(a1,d6),d1
-
- move d0,(a2)+
- move d1,(a2)+
- move d2,(a2)+
-
- ror #1,d2
-
- addq.b #4,d6
- addq.b #8,d7
-
- dbf d4,.zp
-
- rts
-
-
- »» Lineprutku
-
- dolines_4 move.l scr2_4(pc),a0
- add #6420,a0
- lea rata_4,a1
-
- w_blit Init line
- moveq #-1,d2
- move.l d2,$044(a6)
-
- moveq #40,d2
- move d2,$060(a6)
- move d2,$066(a6)
- move #$8000,$074(a6)
-
- moveq #lines_4-1,d5
-
- .ll movem (a1)+,d0/d1/d4
- moveq #0,d2 Draw the line
- tst d0
- bpl.b .1
- neg d0
- moveq #16,d2
- .1 tst d1
- bpl.b .2
- neg d1
- addq #8,d2
- .2 cmp d0,d1
- blo.b .3
- bne.b .z
- tst d0
- beq.b .x
- .z exg d0,d1
- addq #4,d2
- move #$2002,d3
- bra.b .4
- .3 move #$2802,d3
- .4 add d1,d1
-
- w_blit
-
- move d4,$072(a6)
- move.l a0,$048(a6)
- move.l a0,$054(a6)
- move d1,$062(a6)
- sub d0,d1
- bpl.b .5
- addq #2,d2
- .5 move #$0bea,$040(a6)
- move .bcon0(pc,d2),$042(a6)
- move d1,$052(a6)
- sub d0,d1
- move d1,$064(a6)
- move d3,$058(a6)
-
- .x dbf d5,.ll
- rts
-
- .bcon0 dc %0010001,%1010001
- dc %0000001,%1000001
- dc %0011001,%1011001
- dc %0000101,%1000101
- dc %0010101,%1010101
- dc %0001001,%1001001
- dc %0011101,%1011101
- dc %0001101,%1001101
-
- »» Calculate sin & cos lists using formula sin a = a-a^3/3!+a^5/5!-a^7/7!
- »» 11 bits are used in the calculations for precision
-
- do_sine_4 lea sin_4,a0
- lea 128(a0),a1
-
- move.l #823550<<2,d4
- moveq #31,d3
- .l1 move.l d4,d0
- swap d0
- add.l #823550<<3,d4 Pi<<18
- move d0,d2
- move d0,d1
- mulu d1,d1
- lsl.l #4,d1
- swap d1
- mulu d1,d0
- divu #3<<11,d0
- sub d0,d2
- mulu d1,d0
- divu #10<<11,d0
- add d0,d2
- mulu d1,d0
- divu #21<<11,d0
- sub d0,d2
- asr #2,d2
-
- move d2,(a0)+
- move d2,254(a0)
- move d2,-(a1)
- neg d2
- move d2,126(a0)
- move d2,128(a1)
-
- dbf d3,.l1
- rts
-
- scr1_4 dc.l bpl1_4
- scr2_4 dc.l bpl2_4
-
- ;; <5>
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
- »
- » R e p l a y R o u t i n e
- »
- »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
-
- ** ==== Initialize ============================================ **
-
- z
- z_unptb dc.b $00,$00,$01,$02,$04,$08,$10,$20
- dc.b $40,$ff,$fe,$fc,$f8,$f0,$e0,$c0
-
- z_init lea z_data,a4
- lea biisi,a0
- move.l a4,a1
-
- move #biisi_l>>3-1,d0
- .yt move.l (a0)+,(a1)+
- move.l (a0)+,(a1)+
- dbf d0,.yt
-
- lea z(pc),a5
-
- move.l 14(a4),d0 UnSqueeze samples
- lea (a4,d0.l),a0
- move.l (a0)+,d0
- lea -4(a0,d0.l),a1
- lsr.l #1,d0
- add.l d0,a0
- subq #1,d0
- move d0,d1
- .mo move.b -(a0),-(a1)
- dbf d1,.mo
-
- subq #4,a0
- moveq #0,d1
- moveq #0,d3
-
- .un move.b (a1)+,d1
- moveq #$f,d2
- and d1,d2
- lsr #4,d1
- tst d1
- bne.b .u1
- moveq #0,d3
- .u1 add.b z_unptb(pc,d1),d3
- move.b d3,(a0)+
- tst d2
- bne.b .u2
- moveq #0,d3
- .u2 add.b z_unptb(pc,d2),d3
- move.b d3,(a0)+
- dbf d0,.un
-
- lea $dff000,a6
-
- lea z_vibtb-z(a5),a0 Calculate vibrato table
- lea z_sinus-z(a5),a1
- moveq #$3f,d0
- .1 move (a1)+,d4
- moveq #0,d2
- moveq #15,d1
- .2 move d2,d3
- asr #7,d3
- move.b d3,(a0)+
- add d4,d2
- dbf d1,.2
- dbf d0,.1
-
- move.l (a4),d0 Add offset to songpos-pointer
- lea (a4,d0.l),a0
- move.l a0,(a4)
-
- .3 move.l (a0),d0 Add offsets to songpos-table
- bmi.s .4
- add.l a4,d0
- move.l d0,(a0)+
- bra.s .3
- .4
- lea 6(a4),a0
- move.l a4,d1
-
- moveq #31-1,d0 Add offsets to samplepointers
- z_sloop addq.l #8,a0
- add.l d1,(a0)+
- add.l d1,(a0)+
- dbf d0,z_sloop
-
- moveq #-4,d0
- move d0,z_song-z(a5)
- move.b d0,z_pos-z(a5)
-
- move.b #$06,z_speed-z(a5)
- move.b #$01,z_count-z(a5)
-
- bset #1,$bfe001
-
- lea z_ociab-z(a5),a0
- lea $bfd000,a1
- move.l $78.w,(a0)+
- move.l $6c.w,(a0)+
- move.b $400(a1),(a0)+
- move.b $500(a1),(a0)+
- move.b $e00(a1),(a0)+
- move.b $f00(a1),(a0)+
- move $01c(a6),(a0)+
- move #$7fff,$09a(a6)
-
- move.b #$02,$500(a1) $200 = 11.3 raster lines
- move.b #$00,$400(a1)
- move.b #$1f,$d00(a1)
- move.b #$81,$d00(a1)
- move.b #$1c,$e00(a1)
- lea z_irq1-z(a5),a0
- move.l a0,$78.w
- lea z_pirq-z(a5),a0
- move.l a0,$6c.w
- move #$e020,$09a(a6)
-
- bra z_quiet
-
- ** ==== Disable sound ========================================= **
-
- z_end lea $dff000,a6
- lea z_ociab(pc),a0
- lea $bfd000,a1
- move #$7fff,$09a(a6)
- move.l (a0)+,$78.w
- move.l (a0)+,$6c.w
- move.b (a0)+,$400(a1)
- move.b (a0)+,$500(a1)
- move.b #$af,$d00(a1)
- move.b (a0)+,$e00(a1)
- move.b (a0)+,$f00(a1)
- move (a0)+,d0
- or #$8000,d0
- move d0,$09a(a6)
-
- z_quiet clr $0a8(a6)
- clr $0b8(a6)
- clr $0c8(a6)
- clr $0d8(a6)
- move #$000f,$096(a6)
- rts
-
- ** ==== Play music ============================================ **
-
- z_pirq movem.l d0-d4/a0-a6,-(sp)
- bsr z_music
- move #$0020,$09c(a6)
- movem.l (sp)+,d0-d4/a0-a6
- rte
-
- z_music lea z_data,a4
- lea z(pc),a5
- lea $dff000,a6
-
- clr z_dmaen-z(a5)
-
- move.b z_speed-z(a5),d0
- beq z_ende
- subq.b #1,z_count-z(a5) New note?
- bne z_nonew
- move.b d0,z_count-z(a5)
-
- addq.b #4,z_pos-z(a5) Proceed in song
- bne.s z_newpa
-
- move.l (a4),a0 New pattern
- addq #4,z_song-z(a5)
- move z_song-z(a5),d0
- move.l (a0,d0.w),d0
- bpl.s .1
- clr z_song-z(a5)
- clr.b z_pos-z(a5)
- move.l (a0),d0
- .1 move.l d0,z_patt-z(a5)
-
- z_newpa move.b z_pos-z(a5),d0 Play new notes
-
- move.l z_patt-z(a5),a0
-
- pea .1-z(a5)
- lea z_voi1-z(a5),a3
- cmp.b (a0),d0
- bne z_playo
- move.l (a0)+,d1
- bra z_playn
-
- .1 pea .2-z(a5)
- lea z_voi2-z(a5),a3
- addq.b #1,d0
- cmp.b (a0),d0
- bne z_playo
- move.l (a0)+,d1
- bra z_playn
-
- .2 pea .3-z(a5)
- lea z_voi3-z(a5),a3
- addq.b #1,d0
- cmp.b (a0),d0
- bne z_playo
- move.l (a0)+,d1
- bra z_playn
-
- .3 pea .4-z(a5)
- lea z_voi4-z(a5),a3
- addq.b #1,d0
- cmp.b (a0),d0
- bne z_playo
- move.l (a0)+,d1
- bra z_playn
-
- .4 move.l a0,z_patt-z(a5)
-
- z_nonew lea z_voi1-z(a5),a1 Do effects
- bsr z_doefx
- move d4,$0a6(a6)
- move 14(a1),$0a8(a6)
-
- lea z_voi2-z(a5),a1
- bsr z_doefx
- move d4,$0b6(a6)
- move 14(a1),$0b8(a6)
-
- lea z_voi3-z(a5),a1
- bsr z_doefx
- move d4,$0c6(a6)
- move 14(a1),$0c8(a6)
-
- lea z_voi4-z(a5),a1
- bsr z_doefx
- move d4,$0d6(a6)
- move 14(a1),$0d8(a6)
-
- move z_dmaen-z(a5),d0
- beq.s z_ende
- move d0,$096(a6)
- or #$8000,d0
- move d0,z_dmaen-z(a5)
-
- ror #1,d0
- bpl.s .1
- move.l z_voi1+2-z(a5),$0a0(a6)
- move z_voi1+6-z(a5),$0a4(a6)
- .1 ror #1,d0
- bpl.s .2
- move.l z_voi2+2-z(a5),$0b0(a6)
- move z_voi2+6-z(a5),$0b4(a6)
- .2 ror #1,d0
- bpl.s .3
- move.l z_voi3+2-z(a5),$0c0(a6)
- move z_voi3+6-z(a5),$0c4(a6)
- .3 ror #1,d0
- bpl.s .4
- move.l z_voi4+2-z(a5),$0d0(a6)
- move z_voi4+6-z(a5),$0d4(a6)
- .4
-
- z_ende move.b #$1d,$bfde00
- rts
-
- z_irq1 tst.b $bfdd00
- move z_dmaen(pc),$dff096
- move.l #z_irq2,$78.w
- move #$2000,$dff09c
- move.b #$1d,$bfde00
- rte
-
- z_irq2 tst.b $bfdd00
- move.l a6,-(sp)
- lea $dff000,a6
- move.l z_voi1+8(pc),$0a0(a6) Set repeat pointers
- move z_voi1+12(pc),$0a4(a6)
- move.l z_voi2+8(pc),$0b0(a6)
- move z_voi2+12(pc),$0b4(a6)
- move.l z_voi3+8(pc),$0c0(a6)
- move z_voi3+12(pc),$0c4(a6)
- move.l z_voi4+8(pc),$0d0(a6)
- move z_voi4+12(pc),$0d4(a6)
- move #$2000,$09c(a6)
- lea z_irq1(pc),a6
- move.l a6,$78.w
- move.l (sp)+,a6
- move.b #$1c,$bfde00
- rte
-
- z_doefx move 16(a1),d4 Get period
- move.b 24(a1),d0 Do effect commands
- ext d0
- add d0,d0
- moveq #0,d1
- move.b 25(a1),d1 d1 = effect data
-
- move.b z_count-z(a5),d2
- cmp.b z_speed-z(a5),d2
- bne.s .1
-
- move z_jump1(pc,d0.w),d0
- jmp (a5,d0.w)
- .1 move z_jump2(pc,d0.w),d0
- jmp (a5,d0.w)
-
- z_jump1 dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z Count = Speed
- dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z New note
- dc z_retrn-z,z_ofset-z,z_retrn-z,z_posjm-z
- dc z_setvl-z,z_ptbrk-z,z_ecmds-z,z_setsp-z
-
- z_jump2 dc z_arpeg-z,z_sldup-z,z_sldwn-z,z_tport-z Count <> Speed
- dc z_vibra-z,z_tpvsl-z,z_vibvs-z,z_retrn-z
- dc z_retrn-z,z_retrn-z,z_volsl-z,z_retrn-z
- dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z
-
- z_arpls dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0
- dc.b 1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
-
- z_retrn rts
-
- z_arpeg tst d1 CMD 0: Arpeggio
- beq.s z_retrn
- move.b z_count-z(a5),d0
- ext d0
- move.b z_arpls(pc,d0.w),d0
- beq.s z_arpg0
- subq.b #1,d0
- beq.s z_arpg1
- and #$f,d1
- add d1,d1
- add 18(a1),d1
- add #z_notes-z,d1
- move (a5,d1.w),d4
- rts
- z_arpg1 lsr #4,d1
- add d1,d1
- add 18(a1),d1
- add #z_notes-z,d1
- move (a5,d1.w),d4
- rts
- z_arpg0 move 18(a1),d1
- add #z_notes-z,d1
- move (a5,d1.w),d4
- rts
-
- z_sldup sub d1,d4 CMD 1: Slide up
- cmp #$71,d4
- bcc.s .1
- move #$71,d4
- .1 move d4,16(a1)
- rts
-
- z_sldwn add d1,d4 CMD 2: Slide down
- cmp #$358,d4
- bmi.s .1
- move #$358,d4
- .1 move d4,16(a1)
- rts
-
- z_tport tst d1 CMD 3: Tone portamento
- beq.s z_port2
- move.b d1,22(a1)
-
- z_port2 moveq #0,d0
- move.b 22(a1),d0
- move 30(a1),d2
-
- cmp d2,d4
- bpl.s z_tprtu
-
- add d0,d4
- cmp d2,d4
- bmi.s .1
- move d2,d4
- .1 move d4,16(a1)
- rts
-
- z_tprtu sub d0,d4
- cmp d2,d4
- bpl.s .1
- move d2,d4
- .1 move d4,16(a1)
- rts
-
- z_vibra tst.b d1 CMD 4: Vibrato
- beq.s z_dovib
- move.b d1,26(a1)
-
- z_dovib move.b 28(a1),d0 Vibrate period
- add d0,d0
- add d0,d0
- and #$3f0,d0
- moveq #$f,d2
- and.b 26(a1),d2
- add d0,d2
- add #z_vibtb-z,d2
- move.b (a5,d2),d2
- ext d2
- add d2,d4
- moveq #-$10,d0 Vibrato speed
- and.b 26(a1),d0
- lsr.b #2,d0
- add.b d0,28(a1)
- rts
-
- z_ofset lsl #7,d1 Cmd 9: Set sample offset
- cmp 6(a1),d1
- bhi.s .2
- sub d1,6(a1)
- ext.l d1
- add.l d1,d1
- add.l d1,2(a1)
- .2 rts
-
- z_tpvsl bsr z_port2 Cmd 5: Tone portamento and vol slide
- bra.s z_volsl
-
- z_vibvs bsr.s z_dovib Cmd 6: Vibrato and volume slide
-
- z_volsl move d1,d0 Cmd A: Volume slide
- lsr #4,d0
- beq.s .1
- add d0,14(a1)
- moveq #$40,d2
- cmp 14(a1),d2
- bpl.s .2
- move d2,14(a1)
- .2 rts
- .1 sub d1,14(a1)
- bpl.s .3
- clr 14(a1)
- .3 rts
-
- z_posjm move.b #$fc,z_pos-z(a5) Cmd B: Position jump
- ext d1
- add d1,d1
- add d1,d1
- subq #4,d1
- move.b d1,z_song-z(a5)
- rts
-
- z_setvl cmp #$40,d1 Cmd C: Set volume
- bls.s .1
- moveq #$40,d1
- .1 move d1,14(a1)
- rts
-
- z_ptbrk move.b #$fc,z_pos-z(a5) Cmd D: Pattern break
- rts (Parameter not supported!)
-
- z_ecmds moveq #$f,d0 Cmd E: Special commands
- and d1,d0
- lsr #4,d1
- add d1,d1
-
- move z_ejump(pc,d1.w),d1
- jmp (a5,d1.w)
-
- z_ejump dc z_filtr-z,z_fsldu-z,z_fsldd-z,z_retrn-z
- dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z
- dc z_retrn-z,z_retrn-z,z_fvolu-z,z_fvold-z
- dc z_retrn-z,z_retrn-z,z_retrn-z,z_retrn-z
-
- z_filtr tst d0 Cmd E0: Set filter
- beq.s .1
- bset #1,$bfe001
- rts
- .1 bclr #1,$bfe001
- rts
-
- z_fsldu sub d0,d4 CMD E1: Fine slide up
- cmp #$71,d4
- bpl.s .1
- move #$71,d4
- .1 move d4,16(a1)
- rts
-
- z_fsldd add d0,d4 CMD E2: Fine slide down
- cmp #$358,d4
- bmi.s .1
- move #$358,d4
- .1 move d4,16(a1)
- rts
-
- z_fvolu add d0,14(a1) Cmd EA: Fine vol slide up
- moveq #$40,d2
- cmp 14(a1),d2
- bpl.s .1
- move d2,14(a1)
- .1 rts
-
- z_fvold sub d0,14(a1) Cmd EB: Fine vol slide down
- bpl.s .1
- clr 14(a1)
- .1 rts
-
- z_setsp move.b d1,z_speed-z(a5) Cmd F: Set speed
- move.b d1,z_count-z(a5)
- rts
-
- z_playo moveq #0,d1
-
- z_playn move.l d1,d2 Play notes
- and #$0fff,d1
- move d1,24(a3) Save effect command
- swap d1
- and #$7e,d1
- beq.s .5
- ror.l #8,d2
- and #$01f0,d2
- bne.s .1
-
- move 20(a3),d2
- lea -10(a4,d2.w),a2
- add (a2)+,d1
- addq.l #2,a2 (sample 0: no volume change!)
- bra.s .3
-
- .1 move d2,20(a3) Save sample 0 - pointer
- lea -10(a4,d2.w),a2
- add (a2)+,d1
- move (a2)+,14(a3)
-
- .3 move d1,18(a3)
- move z_notes(pc,d1.w),d1
- move d1,30(a3)
-
- cmp.b #3,24(a3) Effect 3: don't care about sample
- beq.s .2
-
- move d1,16(a3)
- move (a3),d1
- or d1,z_dmaen-z(a5)
-
- .4 move (a2)+,6(a3)
- move (a2)+,12(a3)
- move.l (a2)+,2(a3)
- move.l (a2)+,8(a3)
- .2 rts
-
- .5 ror.l #8,d2 No note: change repeat pointers
- and #$01f0,d2
- beq.s .2
- move d2,20(a3)
- lea -8(a4,d2.w),a2
- move (a2)+,14(a3)
- bra.s .4
-
- z_notes dc 0
-
- dc 856,808,762,720,678,640,604,570,538,508,480,453
- dc 428,404,381,360,339,320,302,285,269,254,240,226
- dc 214,202,190,180,170,160,151,143,135,127,120,113
-
- dc 850,802,757,715,674,637,601,567,535,505,477,450
- dc 425,401,379,357,337,318,300,284,268,253,239,225
- dc 213,201,189,179,169,159,150,142,134,126,119,113
-
- dc 844,796,752,709,670,632,597,563,532,502,474,447
- dc 422,398,376,355,335,316,298,282,266,251,237,224
- dc 211,199,188,177,167,158,149,141,133,125,118,112
-
- dc 838,791,746,704,665,628,592,559,528,498,470,444
- dc 419,395,373,352,332,314,296,280,264,249,235,222
- dc 209,198,187,176,166,157,148,140,132,125,118,111
-
- dc 832,785,741,699,660,623,588,555,524,495,467,441
- dc 416,392,370,350,330,312,294,278,262,247,233,220
- dc 208,196,185,175,165,156,147,139,131,124,117,110
-
- dc 826,779,736,694,655,619,584,551,520,491,463,437
- dc 413,390,368,347,328,309,292,276,260,245,232,219
- dc 206,195,184,174,164,155,146,138,130,123,116,109
-
- dc 820,774,730,689,651,614,580,547,516,487,460,434
- dc 410,387,365,345,325,307,290,274,258,244,230,217
- dc 205,193,183,172,163,154,145,137,129,122,115,109
-
- dc 814,768,725,684,646,610,575,543,513,484,457,431
- dc 407,384,363,342,323,305,288,272,256,242,228,216
- dc 204,192,181,171,161,152,144,136,128,121,114,108
-
- dc 907,856,808,762,720,678,640,604,570,538,508,480
- dc 453,428,404,381,360,339,320,302,285,269,254,240
- dc 226,214,202,190,180,170,160,151,143,135,127,120
-
- dc 900,850,802,757,715,675,636,601,567,535,505,477
- dc 450,425,401,379,357,337,318,300,284,268,253,238
- dc 225,212,200,189,179,169,159,150,142,134,126,119
-
- dc 894,844,796,752,709,670,632,597,563,532,502,474
- dc 447,422,398,376,355,335,316,298,282,266,251,237
- dc 223,211,199,188,177,167,158,149,141,133,125,118
-
- dc 887,838,791,746,704,665,628,592,559,528,498,470
- dc 444,419,395,373,352,332,314,296,280,264,249,235
- dc 222,209,198,187,176,166,157,148,140,132,125,118
-
- dc 881,832,785,741,699,660,623,588,555,524,494,467
- dc 441,416,392,370,350,330,312,294,278,262,247,233
- dc 220,208,196,185,175,165,156,147,139,131,123,117
-
- dc 875,826,779,736,694,655,619,584,551,520,491,463
- dc 437,413,390,368,347,328,309,292,276,260,245,232
- dc 219,206,195,184,174,164,155,146,138,130,123,116
-
- dc 868,820,774,730,689,651,614,580,547,516,487,460
- dc 434,410,387,365,345,325,307,290,274,258,244,230
- dc 217,205,193,183,172,163,154,145,137,129,122,115
-
- dc 862,814,768,725,684,646,610,575,543,513,484,457
- dc 431,407,384,363,342,323,305,288,272,256,242,228
- dc 216,203,192,181,171,161,152,144,136,128,121,114
-
- z_sinus dc $0000,$0018,$0031,$004a,$0061,$0078,$008d,$00a1
- dc $00b4,$00c5,$00d4,$00e0,$00eb,$00f4,$00fa,$00fd
- dc $00ff,$00fd,$00fa,$00f4,$00eb,$00e0,$00d4,$00c5
- dc $00b4,$00a1,$008d,$0078,$0061,$004a,$0031,$0018
- dc $0000,$ffe8,$ffcf,$ffb6,$ff9f,$ff88,$ff73,$ff5f
- dc $ff4c,$ff3b,$ff2c,$ff20,$ff15,$ff0c,$ff06,$ff03
- dc $ff01,$ff03,$ff06,$ff0c,$ff15,$ff20,$ff2c,$ff3b
- dc $ff4c,$ff5f,$ff73,$ff88,$ff9f,$ffb6,$ffcf,$ffe8
-
- ** ==== Variables ============================================= **
-
- z_song dc 0
- z_pos dc.b 0
- z_speed dc.b 0
- z_count dc.b 0
- even
- z_patt dc.l 0
- z_dmaen dc 0
-
- z_ociab ds.b 14
-
- z_voi1 dc 1
- ds.b 30
- z_voi2 dc 2
- ds.b 30
- z_voi3 dc 4
- ds.b 30
- z_voi4 dc 8
- ds.b 30
-
- z_vibtb ds.b 1024
-
- ;; <6>
-
- biisi incbin "darkroom.zen"
- biisi_l = *-biisi
- even
-
- pic_2 incbin "darkroom.raw"
-
- »»»»»»» bss (fast) »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- section ada,bss
-
- fast_siz = $1000
- fast ds.b fast_siz
-
- fractar_1 = fast
- zoomaa_1 = fast+200
- rotate_1 = fast+400
- hold_1 = fast+600
-
- sin_3 = fast
- cos_3 = fast+$200
- star_3 = fast+$a00
-
- sin_4 = fast
- rata_4 = fast+360
- ;(ds.w 3*lines)
-
- »»»»»»» bss-chip »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- section we,bss_c
-
- z_data ds.b $10000
- chip_siz = $30000
- chip ds.b chip_siz
-
- g_1 = chip
- bpa1_1 = chip+$3000
- bpa2_1 = chip+$5800
- bpa3_1 = chip+$8000
- bpa4_1 = chip+$a800
- bpb1_1 = chip+$d000
- bpb2_1 = chip+$f800
- bpb3_1 = chip+$12000
- bpb4_1 = chip+$14800
- t_1 = chip+$18000
-
- bpl1_2 = chip
- temp_2 = chip+$2828
- bpl2_2 = chip+$5050
- bpl3_2 = chip+$7850
- bpl4_2 = chip+$a050
- bpl_tx_2 = chip+$c850
-
- line1_3 = chip
- line2_3 = chip+160
- l_even_3 = chip+320
- l_odd_3 = chip+360
- copper1_3 = chip+400
- copper2_3 = chip+$5190
- cmaps_3 = chip+$a190
-
- bpl1_4 = chip
- bpl2_4 = chip+$3200
- bpl3_4 = chip+$6400
-
-
- »»»»»»» copperlistat, ym chip-kama »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
-
- section rw,data_c
-
- copper_0 dc $0100,$0000,$0180,$0000
- dc.l -2
-
- »» routine 1
-
- scopa_1 dc $008e,$2c81,$0090,$2cc1
- dc $0092,$0038,$0094,$00d0
- dc $0108,$0000,$010a,$0000
- dc $0100,$4000,$0102,$0000
-
- ; dc $0180,$0000,$0182,$0100,$0184,$0200,$0186,$0300
- ; dc $0188,$0400,$018a,$0500,$018c,$0600,$018e,$0700
- ; dc $0190,$0800,$0192,$0910,$0194,$0a20,$0196,$0b30
- ; dc $0198,$0c40,$019a,$0d50,$019c,$0e60,$019e,$0f70
-
- dc $0180,$0000,$0182,$0001,$0184,$0002,$0186,$0003
- dc $0188,$0004,$018a,$0005,$018c,$0006,$018e,$0007
- dc $0190,$0008,$0192,$0009,$0194,$000a,$0196,$000b
- dc $0198,$000c,$019a,$000d,$019c,$000e,$019e,$000f
-
- sptra_1 dc $00e0,$0000,$00e2,$0000
- dc $00e4,$0000,$00e6,$0000
- dc $00e8,$0000,$00ea,$0000
- dc $00ec,$0000,$00ee,$0000
- dc.l -2
- scopb_1
- sptrb_1 dc $00e0,$0000,$00e2,$0000
- dc $00e4,$0000,$00e6,$0000
- dc $00e8,$0000,$00ea,$0000
- dc $00ec,$0000,$00ee,$0000
- dc.l -2
-
- »» routine 2
-
- copper_2 dc $008e,$2c81,$0090,$2cc1
- dc $0092,$0038,$0094,$00d0
- dc $0100,$4000,$0102,$0000
- dc $0108,$0000,$010a,$0000
-
- fadehere_2 dc $0180,$0000,$0182,$0226,$0184,$0226,$0186,$033a
- dc $0188,$0226,$018a,$033a,$018c,$033a,$018e,$044f
- dc $0190,$044f,$0192,$066f,$0194,$066f,$0196,$0aaf
- dc $0198,$066f,$019a,$0aaf,$019c,$0aaf,$019e,$0fff
-
- dc.l -2
-
- »» routine 4
-
- copper_4 dc $008e,$2c81,$0090,$2cc1
- dc $0092,$0038,$0094,$00d0
- dc $0100,$2000,$0102,$0001
- dc $0108,$0000,$010a,$0000
- dc $0180,$0000,$0182,$0006,$0184,$0006,$0186,$000c
- dc $0188,$0ccc,$018a,$0ccf,$018c,$0ccf,$018e,$0ccf
- lin1_4 dc $9911,$fffe,$0100,$3000
- lin2_4 dc $bf11,$fffe,$0100,$2000
- dc.l -2
-
- pic_4 incbin "credits.raw"
-
-